import {Position} from "./Position";
import {Orientation} from "./Orientation";

export interface IEntity {
  /**
   * 当初始化后调用
   */
  init(): void;

  /**
   * 于每次逻辑帧中更新
   */
  update(): void;

  /**
   * 删除前调用
   */
  beforeRemove(): void;

  /**
   *  当与其他实体发生碰撞时候的回调
   *  原则上不允许操作other中的属性，因为other上也会调用一次onCollide方法
   */

  onCollide(other: IEntity):void;

  /**
   * 允许销毁这个实体 当返回true时，实体将被从EntityCollection中移除,且会调用beforeRemove((
   */
  shouldRemove():boolean;


  /**
   * 返回物体方形体积
   */
  getSize():number

  getPosition():Position
  getOrientation():Orientation

  draw(ctx:CanvasRenderingContext2D):void

}
